home *** CD-ROM | disk | FTP | other *** search
/ Tech Arsenal 1 / Tech Arsenal (Arsenal Computer).ISO / tek-01 / cuj0593.zip / 1105069A < prev    next >
Text File  |  1993-03-09  |  1KB  |  31 lines

  1.     for (m = 0; m < mmax; m += 2) {
  2.         j = m + mmax;
  3.         tempr = (float) wr *(data1r = data[j]);
  4.         tempi = (float) wi *(data1i = data[j + 1]);
  5.         for (i = m; i < n - mmax * 2; i += mmax * 2) {
  6.         /* mixed precision not significantly more
  7.          * accurate here; if removing float casts,
  8.          * tempr and tempi should be double */
  9.         tempr -= tempi;
  10.         tempi = (float) wr *data1i + (float) wi *data1r;
  11.         /* don't expect compiler to analyze j > i+1 */
  12.         data1r = data[j + mmax * 2];
  13.         data1i = data[j + mmax * 2 + 1];
  14.         data[i] = (datar = data[i]) + tempr;
  15.         data[i + 1] = (datai = data[i + 1]) + tempi;
  16.         data[j] = datar - tempr;
  17.         data[j + 1] = datai - tempi;
  18.         tempr = (float) wr *data1r;
  19.         tempi = (float) wi *data1i;
  20.         j += mmax * 2;
  21.         }
  22.         tempr -= tempi;
  23.         tempi = (float) wr *data1i + (float) wi *data1r;
  24.         data[i] = (datar = data[i]) + tempr;
  25.         data[i + 1] = (datai = data[i + 1]) + tempi;
  26.         data[j] = datar - tempr;
  27.         data[j + 1] = datai - tempi;
  28.         wr = (wtemp = wr) * wpr - wi * wpi;
  29.         wi = wtemp * wpi + wi * wpr;
  30.     }
  31.